/**
 * @file managerStdio.c
 * @brief Implementa una Concrete Factory di Sessione di default restituita da managerStdio.h.
 *
 * La factory standard viene realizata tramite lo standard input e output dello stesso processo.
 *
 * Una sessione per lo stdin-stdout non può essere eliminata, la funzione close non viene
 * implementata. Per permettere l'eliminazione della sessione implementarla e modificare l'assegnazione
 * nella funzione MngStd_getFactoryDesc().
 *
 * @date Mar 19, 2012
 * @author Francesco Corvino
 */
#include "managerStdio.h"
#include <unistd.h>

/**
 * @brief indipendentemente dai dati passati restituisce lo standard input.
 *
 * @brief data parametro inserito per seguire l'interfaccia @see ConcreteFactoryComm
 */
int getStdinFd(HiddenType*data){
	return STDIN_FILENO;
}

/**
 * @brief indipendentemente dai dati passati restituisce lo standard output.
 *
 * @brief data parametro inserito per seguire l'interfaccia @see ConcreteFactoryComm
 */
int getStdoutFd(HiddenType*data){
	return STDOUT_FILENO;
}

/**
 * @brief modifica l'oggetto passato in modo da puntare alle funzioni definite dalla stessa
 * managerStdio.c.
 */
void MngStd_getFactoryDesc(ConcreteFactoryComm* factdesc){
	factdesc->configure = NULL;
	factdesc->startListen = NULL;

	factdesc->getReadFD = getStdinFd;
	factdesc->getWriteFD = getStdoutFd;
	factdesc->close = NULL;
	factdesc->update = NULL;
}
